Copyright(C) 1994,1995,1996,1997 Terumasa KODAKA , Takeshi KONO


■キーボードインタフェース
対象	ノーマル,ハイレゾ,PC-98LT・HA
チップ	8251A(相当品)
解説  o PC-9800シリーズでは、キーボードのキー入力情報はシリアル信号
	(19200bps固定)で本体に送られる。キーボードI/Fの8251A(相当)がキー入力
	情報を受信すると、INT 09h割り込みを発生させ、キーの入力をソフトウェア
	(BIOS等)に知らせる。
      o 98NOTE,PC-98LT・HAなどのようにキーボード・本体一体型の機種でも、
	デスクトップ機と同じようにキーボードとキーボードI/Fはシリアル通信する。
      u 98NOTEシリーズでは、テンキーコネクタにフルキーボードを接続することが
	可能である。
      o PC-9800シリーズでは、8251のTXD信号線がRST#(キーボードコネクタ1番ピン)
	に接続され、当初キーボードのリセットのために使用されていたが、新キー
	ボードではこれを利用してコマンド送信が行われるようになった。
      o 新キーボード搭載機種では、キーボードに対してコマンドを送ることが
	できる。[CAPS],[カナ],[NUM]キーのロック状態の取得やロック状態の制御、
	キーリピート間隔の変更などが行える。
      o PC-9800シリーズでは以下のキーボードが有効である。
		----------------+----------------------------------------------
		旧キーボード	|
		 +--------------+----------------------------------------------
		 |PC-98LT	|[BS],[ROLL UP],[ROLL DOWN],[DEL],[HELP],[COPY]
		 |		|キーがないが、次の操作で代用できる。
 		 |		|[BS],[DEL] =[DEL BS]
		 |		|[HELP]     =[CTRL]+[SHIFT]+[H]
		 |		|[ROLL UP]  =[CTRL]+[SHIFT]+[↑]
 		 |		|[ROLL DOWN]=[CTRL]+[SHIFT]+[↓]
		 |		|[COPY]     =[CTRL]+[SHIFT]+[P]
		 +--------------+----------------------------------------------
		 |ハイレゾ	|PC-98XA・XL・XL^2
		 +--------------+----------------------------------------------
		 |NFERなし	|PC-9801初代・E・F・M
		 +--------------+----------------------------------------------
		 |その他	|PC-9801初代・E・F・M以外
		-+--------------+----------------------------------------------
		新キーボード	|
		 +--------------+----------------------------------------------
		 |98NOTE	|98NOTEシリーズ
		 +--------------+----------------------------------------------
		 |PC-9801-98	|楽々キーボード
		 +--------------+----------------------------------------------
		 |PC-9801-106	|98標準キーボード(Windowsキー,アプリケーションキーなし)
		 +--------------+----------------------------------------------
		 |PC-9801-114	|PC-PTOSキーボード
		 +--------------+----------------------------------------------
		 |PC-9801-115	|文豪DPキーボード
		 +--------------+----------------------------------------------
		 |PC-9801-116	|106キーボード
		 +--------------+----------------------------------------------
		 |PC-9801-119	|98標準キーボード(Windowsキー,アプリケーションキーあり)
		 +--------------+----------------------------------------------
		 |その他	|PC-9801-106,PC-9801T-03相当
		-+--------------+----------------------------------------------
関連	I/O 0000h bit 1
	INT 18h - Function 00〜09h
	INT 09h(外部割り込み)
	0000:0502〜053Ah


I/O	0041h
名前	キーボードインタフェース
機能
	[READ]	受信データ読み出し
	bit 7〜0: メイク/ブレイクコード,ステータス
		00〜7Fh= メイクコード
		80〜FFh= ブレイクコード
		FAh= ACK
		FCh= NACK
	[WRITE]	送信データ書き込み
	bit 7〜0: 下りコマンド
		--------+---------------------------------------------------
		コマンド|内容
		--------+---------------------------------------------------
		95h	|拡張キー設定■[PC-9801-98・119](Undocumented)
			|* 2バイト目にパラメータを出力
			|bit 7〜0:
			|	00h= 通常
			|	03h= Windowsキー、アプリケーションキー有効
			|		■[PC-9801-119]
		--------+---------------------------------------------------
		96h	|モード識別■[PC-9801-98](Undocumented)
			|* 自動変換モードではA0h,86hが返される
			|* 通常モードではA0h,85hが返される
		--------+---------------------------------------------------
		99h	|不明(Undocumented)
			|* FBhが返される
		--------+---------------------------------------------------
		9Ch	|キーボードリピート速度設定(Undocumented)
			|* 2バイト目にパラメータを出力
			|bit 7: 未使用
			|bit 6,5: ディレイ
			|	11b= 1000ms
			|	10b= 500ms
			|	01b= 500ms(デフォルト)
			|	00b= 250ms
			|bit 4〜0: リピート速度
			|	11111b= 最低速
			|	00001b= 最高速(デフォルト)
		--------+---------------------------------------------------
		9Dh	|不明■[PC-9801NS/T](Undocumented)
			|* 2バイト目にパラメータを出力
			|00h= 不明	
			|01h= 不明	
		--------+---------------------------------------------------
		9Dh	|キーボードLED読みだし(Undocumented)
			|* 2バイト目に60hを送出
			|* 以下のフォーマットでLED状態が送られる
			|bit 7〜4: 未使用
			|bit 3: [カナ]のLED
			|bit 2: [CAPS]のLED
			|bit 0: [NUM]のLED
			|	1= ON
			|	0= OFF
		--------+---------------------------------------------------
		9Dh	|キーボードLED設定
			|* 2バイト目にパラメータを出力
			|bit 7〜4: 常に0111b
			|bit 3: [カナ]のLED
			|bit 2: [CAPS]のLED
			|bit 0: [NUM]のLED(Undocumented)
			|	1= ON
			|	0= OFF
		--------+---------------------------------------------------
		9Eh	|不明(Undocumented)
		--------+---------------------------------------------------
		9Fh	|キーボードタイプ識別
			|* 新キーボードではA0h,80hが返される
		--------+---------------------------------------------------
解説  o キーボードからのメイク/ブレイクコードを取得する。
      o キーボードに対して下りコマンドを発行する。
関連	I/O 0041h


I/O	0043h
名前	キーボードインタフェース
機能
	[READ]	■ステータスリード時のビットの意味
	bit 7: DSR入力端子
		1= HIGHレベル
		0= LOWレベル
		* キーボードコネクタ6番ピンの状態を示す。(Undocumented)
	bit 6: SYNC/BRK
		1= ブレーク検出
		0= なし
		* キーボードと正規のハンドシェイクを行っている限り発生しない。
	bit 5: フレーミングエラー(FE)検出
		1= あり
		0= なし
	bit 4: オーバーランエラー(OE)検出
		1= あり
		0= なし
		* キーボードと正規のハンドシェイクを行っている限り発生しない。
	bit 3: パリティエラー(PE)検出
		1= あり
		0= なし
	bit 2: TxEMP(送信終了)
	bit 1: RxRDY(データ受信)
	bit 0: TxRDY(送信可能)

	[WRITE]	■コマンドワードライト時のビットの意味
	bit 7: エンターハントフェーズ
		* キーボードI/Fは調歩同期通信なので使用しない。0に設定。
	bit 6: 8251Aリセット
		1= する
		0= しない
	bit 5: RTS端子制御
		1= RDY#信号線は常にインアクティブ
		0= RDY#信号線はRxRDYの状態に従う
		* キーボードI/Fでは、RDY#信号線(キーボードコネクタ3番ピン)の
		  動作を制御する。以下のような意味になる。
	bit 4: エラーフラグクリア
		1= 8251AのFE,OE,PEをクリアする
		0= エラークリアしない
	bit 3: TxDATAブレーク送信
		1= RST#信号線をLOWレベルにする
		0= RST#信号線をHIGHレベルにする
		* キーボードI/Fでは、RST#信号線(キーボードコネクタ1番ピン)の
		  動作を制御する。RST#信号線を13μs以上の期間LOWレベルに
		  すると、キーボード内のCPUがリセットされる。
	bit 2: 受信許可
		1= キーボードからデータ受信する
		0= キーボードからデータ受信しない
		* キーボードI/Fでは次のような動作になる。
	bit 1: DTR信号
		1= RTY#信号をHIGHレベルにする
		0= RTY#信号をLOWレベルにする
		* キーボードI/Fでは、RTY#信号線(キーボードコネクタ5番ピン)の
		  動作を制御する。通常はHIGH。LOWのとき、キーボードにデータの
		  再送を要求する。
	bit 0: 送信許可
		1= RST#信号線からデータ送信する
		0= RST#信号線からデータ送信しない
		* キーボードI/Fでは、キーボードに対する下りコマンドを発行する
		  とき、RST#信号線を利用する。コマンド送信時、1に設定する。
	[WRITE]	■モードライト時のビットの意味
	bit 7,6: ST2,ST1(送信ストップビット数)
		01b(1ビット)を設定
	bit 5,4: P1,P0(パリティ発生/チェック)
		01b(奇数パリティ)を設定
	bit 3,2: L1,L0(キャラクタ長)
		11b(8ビット)を設定
	bit 1,0: B1,B0(ボーレート)
		10b(16倍クロック)を設定

解説  o キーボードインタフェースに用いられる8251相当品のモードを設定する。
関連	I/O 0043h